package br.unisal.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.LayoutStyle;
import javax.swing.WindowConstants;


import br.unisal.domain.Cliente;
import br.unisal.domain.Endereco;
import br.unisal.reader.LeitorXML;
import br.unisal.repository.ClienteRepository;
import br.unisal.repository.EntregadorRepository;
import br.unisal.repository.PedidoRepository;
import br.unisal.repository.ProdutoRepository;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class JanelaPrincipal extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;
	private JLabel labelTitulo;
	private JButton botaoMenuCadastro;
	private JButton botaoGerenciarEntregadores;
	private JButton botaoSairSemGravar;
	private JButton botaoGerenciaProdutos;
	private JButton botaoGravaESai;
	private JButton botaoMenuGerenciaPedido;
	private JButton botaoMenuPedido;
	
	public MenuCadastro menuCadastro;
	public MenuPedido menuPedido;
	public MenuGerenciaPedido menuGerenciaPedido;
	public MenuEntregadores menuEntregadores;
	public MenuProdutos menuProdutos;
	
	public LeitorXML leitorGravador = new LeitorXML();
	
	private static Cliente clienteDePassagem = new Cliente("", "", "", new Endereco("", 0, "", "", ""));
	private static PedidoRepository pedidoRepository = new PedidoRepository();
	private static EntregadorRepository entregadorRepository = new EntregadorRepository();
	private static ProdutoRepository produtoRepository = new ProdutoRepository();
	private static ClienteRepository clienteRepository = new ClienteRepository(); 
	
	public JanelaPrincipal() {
		super();
		criaJanelaPrincipal(); 
	}
	
	public static Cliente getClienteDePassagem() {
		return clienteDePassagem;
	}

	public static void setClienteDePassagem(Cliente cliente) {
		clienteDePassagem = cliente;
	}

	public static PedidoRepository getPedidoRepository() {
		return pedidoRepository;
	}

	public static EntregadorRepository getEntregadorRepository() {
		return entregadorRepository;
	}

	public static ProdutoRepository getProdutoRepository() {
		return produtoRepository;
	}

	public static ClienteRepository getClienteRepository() {
		return clienteRepository;
	}

	private void criaJanelaPrincipal() {
		try {
			GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
			getContentPane().setLayout(thisLayout);
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				labelTitulo = new JLabel();
				labelTitulo.setText("Sistema de Disk Entrega - Pizzaria");
				labelTitulo.setFont(new java.awt.Font("Segoe UI",0,20));
			}
			{
				botaoMenuCadastro = new JButton();
				botaoMenuCadastro.setText("Verifica Cadastro Cliente");
				botaoMenuCadastro.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						menuCadastro = new MenuCadastro();
						menuCadastro.setLocationRelativeTo(null);
						menuCadastro.setVisible(true);						
					}
				});
			}
			{
				botaoMenuPedido = new JButton();
				botaoMenuPedido.setText("Realizar Pedido");
				botaoMenuPedido.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						menuPedido = new MenuPedido();
						menuPedido.setLocationRelativeTo(null);
						menuPedido.setVisible(true);
					}
				});
			}
			{
				botaoMenuGerenciaPedido = new JButton();
				botaoMenuGerenciaPedido.setText("Gerenciar Pedidos");
				botaoMenuGerenciaPedido.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						menuGerenciaPedido = new MenuGerenciaPedido();
						menuGerenciaPedido.setLocationRelativeTo(null);
						menuGerenciaPedido.setVisible(true);
					}
				});
			}
			{
				botaoGravaESai = new JButton();
				botaoGravaESai.setText("Gravar e Sair");
				botaoGravaESai.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						try {
							leitorGravador.gravaProdutosArquivo(produtoRepository.getProdutos());
							leitorGravador.gravaClientesArquivo(clienteRepository.retornaListaClientes());
							leitorGravador.gravaEntregadoresArquivo(entregadorRepository.retornaListaEntregadores());
							leitorGravador.gravaPedidosArquivo(pedidoRepository.getPedidos());
						} catch (FileNotFoundException e1) {
							e1.printStackTrace();
						}
						System.exit(0);
					}
				});
			}
			{
				botaoSairSemGravar = new JButton();
				botaoSairSemGravar.setText("Sair Sem Gravar");
				botaoSairSemGravar.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						System.exit(0);
					}
				});
			}
			{
				botaoGerenciaProdutos = new JButton();
				botaoGerenciaProdutos.setText("Gerencia Produtos");
				botaoGerenciaProdutos.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						menuProdutos = new MenuProdutos();
						menuProdutos.setLocationRelativeTo(null);
						menuProdutos.setVisible(true);						
					}
				});
			}
			{
				botaoGerenciarEntregadores = new JButton();
				botaoGerenciarEntregadores.setText("Gerenciar Entregadores");
				botaoGerenciarEntregadores.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						menuEntregadores = new MenuEntregadores();
						menuEntregadores.setLocationRelativeTo(null);
						menuEntregadores.setVisible(true);
					}
				});
			}
			thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(35, 35)
				.addComponent(labelTitulo, GroupLayout.PREFERRED_SIZE, 42, GroupLayout.PREFERRED_SIZE)
				.addGap(28)
				.addComponent(botaoMenuCadastro, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addGap(22)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(botaoMenuPedido, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(botaoGerenciaProdutos, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addGap(27)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(botaoMenuGerenciaPedido, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(botaoGerenciarEntregadores, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addGap(19)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(botaoGravaESai, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(botaoSairSemGravar, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE))
				.addContainerGap(37, 37));
			thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(54, 54)
				.addGroup(thisLayout.createParallelGroup()
				    .addGroup(thisLayout.createSequentialGroup()
				        .addGroup(thisLayout.createParallelGroup()
				            .addComponent(botaoMenuGerenciaPedido, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 140, GroupLayout.PREFERRED_SIZE)
				            .addComponent(botaoMenuPedido, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 140, GroupLayout.PREFERRED_SIZE))
				        .addGap(52)
				        .addGroup(thisLayout.createParallelGroup()
				            .addGroup(thisLayout.createSequentialGroup()
				                .addComponent(botaoGerenciarEntregadores, GroupLayout.PREFERRED_SIZE, 177, GroupLayout.PREFERRED_SIZE)
				                .addGap(0, 0, Short.MAX_VALUE))
				            .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                .addComponent(botaoGerenciaProdutos, GroupLayout.PREFERRED_SIZE, 171, GroupLayout.PREFERRED_SIZE)
				                .addGap(0, 6, Short.MAX_VALUE))
				            .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                .addGap(19)
				                .addComponent(botaoSairSemGravar, GroupLayout.PREFERRED_SIZE, 143, GroupLayout.PREFERRED_SIZE)
				                .addGap(0, 15, Short.MAX_VALUE))))
				    .addGroup(thisLayout.createSequentialGroup()
				        .addGap(17)
				        .addGroup(thisLayout.createParallelGroup()
				            .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                .addComponent(botaoGravaESai, GroupLayout.PREFERRED_SIZE, 110, GroupLayout.PREFERRED_SIZE)
				                .addGap(0, 203, Short.MAX_VALUE))
				            .addGroup(thisLayout.createSequentialGroup()
				                .addPreferredGap(botaoGravaESai, labelTitulo, LayoutStyle.ComponentPlacement.INDENT)
				                .addGroup(thisLayout.createParallelGroup()
				                    .addGroup(thisLayout.createSequentialGroup()
				                        .addComponent(labelTitulo, GroupLayout.PREFERRED_SIZE, 301, GroupLayout.PREFERRED_SIZE)
				                        .addGap(0, 0, Short.MAX_VALUE))
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addGap(31)
				                        .addComponent(botaoMenuCadastro, 0, 215, Short.MAX_VALUE)
				                        .addGap(55)))))
				        .addGap(39)))
				.addContainerGap(39, 39));
			pack();
			this.setSize(480, 367);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}

}
